package main

import "fmt"

func main() {

	var emptySlice []int
	printSlice(emptySlice) // 长度=0，容量=0，切片=[]

	/* 追加空切片 */
	emptySlice = append(emptySlice, 0)
	printSlice(emptySlice) // 长度=1，容量=1，切片=[0]

	/* 向切片中增加一个元素 */
	emptySlice = append(emptySlice, 1)
	printSlice(emptySlice) // 长度=2，容量=2，切片=[0 1]

	/* 向切片中追加多个元素 */
	emptySlice = append(emptySlice, 2, 3, 4)
	printSlice(emptySlice) // 长度=5，容量=6，切片=[0 1 2 3 4]

	/* 创建切片是之前2倍的容量 */
	emptySliceNew := make([]int, len(emptySlice), cap(emptySlice)*2)
	printSlice(emptySliceNew) // 长度=5，容量=12，切片=[0 0 0 0 0]

	/* 拷贝切片,将emptySlice 的内容拷贝到  emptySliceNew 中*/
	copy(emptySliceNew, emptySlice)
	printSlice(emptySliceNew) // 长度=5，容量=12，切片=[0 1 2 3 4]
}

func printSlice(slice []int) {
	fmt.Printf("长度=%d，容量=%d，切片=%v", len(slice), cap(slice), slice)
	fmt.Println()
}
